package com.cskaoyan.javase.method._2exercise;

import javax.swing.table.TableModel;
import javax.xml.transform.sax.SAXTransformerFactory;

/**
 * 计算器类
 * 定义一个计算器（Calculator）它的功能有：
 * 加，减，乘，除
 * 求平方
 * 求a的n次方
 *
 * @since 17:35
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Calculator {
    public static void main(String[] args) {
        System.out.println(power(2, 10));
    }

    // 加
    public static int add(int num1, int num2) {
        return num1 + num2;
    }

    // 减
    public static int subtract(int num1, int num2) {
        return num1 - num2;
    }

    // 乘
    public static int multiply(int num1, int num2) {
        return num1 * num2;
    }

    // 除
    public static double divide(double num1, int num2) {
        /*
            两个int类型相除,能够得到小数?
            肯定得不到,int/int = int
            这时:
                1.要么改变一个形参数据类型为double
                2.要么把其中某一个变量加0.0或者乘以1.0
         */
        return num1 / num2;
    }

    // 求平方
    public static int square(int num) {
        return num * num;
    }

    // 求a的n次方,幂运算,a和n都是正整数
    public static int power(int a, int n) {
        /*
            幂运算两种解决方式:
                1.直接用数学工具类Math中的幂运算方法
                    double = Math.pow(double,double)
                    这种方式比较快,推荐
                2.可以考虑用循环
                    a的n次方就是n个a想乘
         */
        // return (int) Math.pow(a, n);
        int result = 1;
        for (int i = 0; i < n; i++) {
            result *= a;
        }
        return result;
    }
}
